package com.syni.mdd.yhd.common.all.service;

import com.syni.mdd.yhd.common.all.dao.jpa.BmsBusinessCouponDao;
import com.syni.mdd.yhd.common.all.dto.requestDto.business.BusinessCouponReDto;
import com.syni.mdd.yhd.common.all.entity.BmsBusinessCoupon;
import com.syni.mdd.yhd.common.all.entity.coupon.BmsUserReceCoupon;
import com.syni.mdd.yhd.common.all.quartz.businessCoupon.job.CouponAsOfJob;
import com.syni.mdd.yhd.common.all.quartz.businessCoupon.job.CouponToSendJob;
import com.syni.mdd.sjb.common.component.utils.common.utils.ParamsMap;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @className  BmsBusinessCouponService
 * @description TOO
 * @Author hwq
 * @DATE 2019/9/23 10:32
 * @VERSION 1.0
 **/
public interface BmsBusinessCouponService {


    BmsBusinessCouponDao getBaseDao();

    Map<String, Object> createCoupon(BusinessCouponReDto businessCouponReDto);

    Map<String, Object> showCouponList(BusinessCouponReDto businessCouponReDto);

    Map<String, Object> showCouponDetail(BusinessCouponReDto businessCouponReDto);

    Map<String, Object> offCoupon(BusinessCouponReDto businessCouponReDto);

    void doBusinessCouponTiming(Class<CouponToSendJob> couponToSendJobClass, Date sendStartTime, BmsBusinessCoupon businessCoupon);

    void doBusinessCouponTimingByOff(Class<CouponAsOfJob> couponAsOfJobClass, Date sendEndTime,BmsBusinessCoupon bmsBusinessCoupon);

    Map<String, Object> userGetBusinessCoupon(BusinessCouponReDto businessCouponReDto);

    Map<String, Object> userReceiveBusinessCoupon(ParamsMap paramsMap);

    void setBusinessCoupons(BmsBusinessCoupon businessCoupon);

    void setBusinessCoupons(List<BmsBusinessCoupon> businessCoupons);

    Map<Integer, BmsBusinessCoupon> getBusinessCoupon(Set<Integer> couponIds);

}
